package com.lpf.config;

import com.lpf.beans.Person;
import com.lpf.condition.LinuxCondition;
import com.lpf.condition.WindowsCondition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

@Configuration

//类中组件统一设置。满足当前条件，这个类中配置的所有bean注册才能生效。
@Conditional({WindowsCondition.class})

public class MainConfig {

	/**
	 * @Conditional({Condition}) ：按照一定的条件进行判断，满足条件给容器中注册bean。可以用在类上和方法上。
	 *
	 * SpringBoot底层大量使用的注解
	 *
	 * 如果系统是windows，给容器中注册("bill")
	 * 如果是linux系统，给容器中注册("linus")
	 */

	@Bean("bill")
	@Conditional({WindowsCondition.class})
	public Person person01(){
		return new Person("Bill Gates",62);
	}

	@Conditional(LinuxCondition.class)
	@Bean("linus")
	public Person person02(){
		return new Person("linus", 48);
	}

}